/**
 * Static
 * static 关键字用来指定静态成员
 *   通过static修饰的属性是静态属性
 *   通过static修饰的方法是静态房啊
 * 静态成员通过类名称直接访问(不需要实例化)
 *   实例化是比较消耗资源的，声明静态成员，可以提高程序性能
 * 静态方法不能访问非静成员，非静态方法可以访问静态成员
 *   静态方法中不能使用this关键字
 *   不能使用this关键字，访问静态属性
 */

class Person {
  // 静态属性
  static String name = '';
  int age = 0;

  Person(String names, int age) {
    name = names;
    this.age = age;
  }
  // 静态方法，静态方法只能访问静态方法和属性
  static getName() {
    return name;
  }

  // 普通方法 可以访问静态方法和普通方法以及属性
  getInfo() {
    return {'name': name, 'age': age};
  }
}

void main() {
  Person p = Person('hzy', 20);
  //  访问静态方法
  print(Person.getName());
  // 访问静态属性
  print(Person.name);
  Person.name = 'hzy2';
  // print(p.name); //静态属性不能使用实例化对象进行访问
  print(p.getInfo());
}
